[
  {
    "description": "allOf: async + sync",
    "schema": {
      "$async": true,
      "allOf": [
        {
          "idExists": { "table": "users" }
        },
        {
          "type": "integer",
          "minimum": 3
        }
      ]
    },
    "tests": [
      {
        "description": "valid id",
        "data": 5,
        "valid": true
      },
      {
        "description": "another valid id",
        "data": 8,
        "valid": true
      },
      {
        "description": "invalid async - not user id",
        "data": 9,
        "valid": false
      },
      {
        "description": "invalid sync - valid id but too small",
        "data": 1,
        "valid": false
      }
    ]
  },
  {
    "description": "anyOf: async + sync",
    "schema": {
      "$async": true,
      "anyOf": [
        {
          "idExists": { "table": "users" }
        },
        {
          "type": "integer",
          "minimum": 3
        }
      ]
    },
    "tests": [
      {
        "description": "valid id",
        "data": 1,
        "valid": true
      },
      {
        "description": "valid - not id but big enough",
        "data": 4,
        "valid": true
      },
      {
        "description": "valid - id and big enough",
        "data": 5,
        "valid": true
      },
      {
        "description": "invalid both",
        "data": 2,
        "valid": false
      }
    ]
  },
  {
    "description": "oneOf: async + sync",
    "schema": {
      "$async": true,
      "oneOf": [
        {
          "idExists": { "table": "users" }
        },
        {
          "type": "integer",
          "minimum": 3
        }
      ]
    },
    "tests": [
      {
        "description": "valid id",
        "data": 1,
        "valid": true
      },
      {
        "description": "valid - not id but big enough",
        "data": 4,
        "valid": true
      },
      {
        "description": "invalid - id and big enough",
        "data": 5,
        "valid": false
      },
      {
        "description": "invalid both",
        "data": 2,
        "valid": false
      }
    ]
  },
  {
    "description": "not with async",
    "schema": {
      "$async": true,
      "not": {
        "idExists": { "table": "users" }
      }
    },
    "tests": [
      {
        "description": "invalid because valid id",
        "data": 1,
        "valid": false
      },
      {
        "description": "valid because not a valid id",
        "data": 4,
        "valid": true
      }
    ]
  }
]
